Skip to content

Ubuntu Mirror mit debmirror einrichten

Zuerst installieren wir die benötigten Debian Pakete. Auf ein Debian Server verwenden wir das Paket debian-keyring und auf einen Ubuntu Server verwenden wir ubuntu-keyring.

root:~# apt-get install debmirror debian-keyring

Nun erstellen wir die Verzeichnisstruktur des Ubuntu Mirrors.

root:~# mkdir -p /var/www/example.com/mirror/ubuntu
root:~# mkdir -p /var/www/example.com/mirror/ubuntu-security
root:~# mkdir -p /var/www/example.com/mirror/ubuntu-updates
root:~# mkdir -p /var/www/example.com/mirror/ubuntu-backports

Dann erstellen oder laden wir uns das Skript debmirror.sh herunter, welches uns mit Hilfe von debmirror die Pakete vom angegebenen Server spiegelt.

root:~# wget https://wiki.tuxnet24.de/others/.data/debmirror.sh -O /usr/local/bin/debmirror.sh && chmod 755 /usr/local/bin/debmirror.sh

Jetzt laden wir die Datei ubuntu-archive-keyring.gpg von old-releases.ubuntu.com herrunter und speichern die Datei unter /usr/share/keyrings/.

root:~# wget http://old-releases.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg -O /usr/share/keyrings/ubuntu-archive-keyring.gpg

Als nächstes importieren wir die Datei /usr/share/keyrings/ubuntu-archive-keyring.gpg.

root:~# gpg --no-default-keyring --keyring trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg

Für das Skript richten wir uns einen Cronjob ein, welches jeden Montag eines jeden zweiten Monats den Mirror aktualisiert.

root:~# crontab -e
# ********************************************************************
# Minute    Stunde  Tag     Monat   Wochentag   Komando
# 0-59      0-23    0-31    0-12    0-7 (0 + 7 = So.)
# ********************************************************************
#
# date: 2013-07-16 13:27
# description: Update every monday in 2 month the ubuntu mirror
0 1 * */2 1 /usr/local/bin/debmirror.sh >/dev/null 2>&1
0 3 * */2 1 /usr/local/bin/debmirror.sh "security" >/dev/null 2>&1
0 5 * */2 1 /usr/local/bin/debmirror.sh "updates" >/dev/null 2>&1
0 7 * */2 1 /usr/local/bin/debmirror.sh "backports" >/dev/null 2>&1
#
# ********************************************************************
# EOF

Als nächstes initialisieren wir den Ubuntu Mirror, indem wir das Skript debmirror.sh manuell ausführen.

root:~# /usr/local/bin/debmirror.sh
root:~# /usr/local/bin/debmirror.sh security
root:~# /usr/local/bin/debmirror.sh updates
root:~# /usr/local/bin/debmirror.sh backports

Damit unser Mirror über HTTP erreichbar ist, erstellen wir uns eine Apache vHost Datei mit etwa folgenden Inhalt.

root:~# vi /etc/apache2/sites-available/mirror
<VirtualHost *:80>
        ServerName mirror.example.com
        ServerAdmin webmaster@example.com

        DocumentRoot /var/www/example.com/mirror

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/example.com/mirror>
                Options Indexes FollowSymLinks
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/mirror.example.com_err.log
        CustomLog /var/log/apache2/mirror.example.com_acc.log combined
        LogLevel warn
</VirtualHost>

Nun aktivieren wir noch die soeben erstellte vHost Datei und lassen den Apache Webserver die Konfiguration neu einlesen.

root:~# a2ensite mirror
root:~# apache2ctl configtest && apache2ctl graceful

Nun können wir auf unseren anderen Servern/Rechnern die /etc/apt/source.list anpassen, das wir diesen Mirror nutzen.

deb http://mirror.example.com/ubuntu natty universe multiverse main restricted
deb http://mirror.example.com/ubuntu-security natty-security universe main restricted multiverse
deb http://mirror.example.com/ubuntu-updates natty-updates main restricted universe multiverse
deb http://mirror.example.com/ubuntu-backports natty-backports main restricted universe multiverse

Als letzten Schritt aktualisieren wir noch die Paketliste mit dem neuen Mirror.

root:~# apt-get update

Dokumentation